package com.ck.ips.service.sys;

import com.ck.common.model.OperationResult;
import com.ck.common.model.Role;
import com.ck.common.page.PageInfo;
import com.ck.ips.model.vo.sys.RoleListVO;
import com.ck.ips.model.vo.sys.RoleSelectListVO;

import java.util.List;

/**
 * 角色Service
 *
 */
public interface RoleService {
	/**
	 * 保存角色
	 *
	 * @param role      Role
	 * @param moduleIds 模块IDS
	 * @param deviceGroupIds 终端分组id
     * @return long(主键)
	 */
	OperationResult insertRole(Role role, String moduleIds, String deviceGroupIds);

	/**
	 * 修改角色
	 *  @param role      Role
	 * @param moduleIds 模块IDS
	 * @param deviceGroupIds 终端分组id
	 */
	OperationResult updateRole(Role role, String moduleIds, String deviceGroupIds);

	/**
	 * 根据角色名称获取角色
	 *
	 * @param roleName    角色名称
	 * @return Role(角色)
	 */
	Role getRoleByRoleName( String roleName);

	/**
	 * 获取角色列表
	 *
	 * @param status      状态
	 * @param roleName    角色名称
	 * @param pageNum     当前页
	 * @param pageSize    条数
	 * @return PageInfo<RoleListVO>
	 */
	PageInfo<RoleListVO> listRole(Integer status, String roleName, Integer pageNum, Integer pageSize);

	/**
	 * 获取所有角色列表
	 *
	 * @return List<RoleSelectListVO>
	 */
	List<RoleSelectListVO> listRoleSelect();

	/**
	 * 获取角色拥有的权限名称
	 *
	 * @param roleId 角色ID
	 * @return List<String>
	 */
	List<String> listModuleNamesByRoleId(Long roleId) ;

	/**
	 * 根据角色Id获取拥有的权限Id
	 * @param roleId
	 * @return
	 */
	List<String> listModuleIdsByRoleId(Long roleId);

    /**
     * 禁用启用角色
     *
     * @param roleId      待操作的角色
	 * @param status      状态
	 * @author linqiang
	 */
	OperationResult enableDisableRole(Long roleId,Integer status);

	/**
	 * 判断用户所有角色是否被禁用
	 * @param userId
	 * @return
	 */
	boolean isAllDisableByUser(Long userId);

	/**
	 * 删除角色
	 * @param roleId
	 * @return
	 */
    OperationResult deleteRole(Long roleId);
}
